package com.ruoyi.project.manage.project.domain;

import java.math.BigDecimal;
import java.text.Format;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;

/**
 * 项目信息对象 eb_project
 * 
 * @author fangkun
 * @date 2022-03-28
 */
public class Project extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long projectId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目代码 */
    @Excel(name = "项目代码")
    private String projectCode;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private Integer projectType;

    /** 所属产业 */
    @Excel(name = "所属产业")
    private Integer projectIndustry;

    /** 预计年产值 */
    @Excel(name = "预计年产值")
    private BigDecimal projectWorthExpect;

    /** 审批类型 */
    @Excel(name = "审批类型")
    private Integer approveType;

    /** 建设性质 */
    @Excel(name = "建设性质")
    private Integer constructionType;

    /** 建设周期（月） */
    @Excel(name = "建设周期（月）")
    private Integer constructionCycle;

    /** 是否开工/复工，0 为是，1 为否 */
    @Excel(name = "是否开工/复工")
    private Integer isBegin;

    /** 项目标签 */
    @Excel(name = "项目标签")
    private String projectLabel;

    /** 是否六定，0为否，1为是 */
    @Excel(name = "是否六定，0为否，1为是")
    private Integer isSixDone;

    /** 项目批次 */
    @Excel(name = "项目批次")
    private Integer projectBatch;

    /** 资金需求 */
    @Excel(name = "资金需求")
    private BigDecimal fundDemand;

    /** 建设地点 */
    @Excel(name = "建设地点")
    private Integer projectArea;

    /** 详细建设地点 */
    @Excel(name = "详细建设地点")
    private String projectAddress;

    /** 经度 */
    @Excel(name = "经度")
    private String longitude;

    /** 纬度 */
    @Excel(name = "纬度")
    private String latitude;

    /** 计划开工时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划开工时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date beginDatePlan;

    /** 计划竣工时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划竣工时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDatePlan;

    /** 建设内容及规模 */
    @Excel(name = "建设内容及规模")
    private String projectIntroduct;

    /** 存在问题 */
    @Excel(name = "存在问题")
    private String projectProblem;

    /** 建设单位名称 */
    @Excel(name = "建设单位名称")
    private String constructorName;

    /** 统一社会信用代码 */
    @Excel(name = "统一社会信用代码")
    private String constructorCode;

    /** 法人代表姓名 */
    @Excel(name = "法人代表姓名")
    private String constructorCorp;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactPerson;

    /** 手机号码 */
    @Excel(name = "手机号码")
    private String contactPhone;

    /** 项目状态 */
    @Excel(name = "项目状态")
    private Integer projectStatus;

    /** 总投资 */
    @JsonFormat(pattern="#0.00")
    @Excel(name = "总投资")
    private BigDecimal totalInvest;

    /** 完成投资 */
    @Excel(name = "完成投资")
    private BigDecimal doneInvest;

    /** 实际到位资金 */
    @Excel(name = "实际到位资金")
    private BigDecimal actualInvest;

    /** 计划投资 */
    @Excel(name = "计划投资")
    private BigDecimal planInvest;

    /** 资金落实状态 */
    @Excel(name = "资金落实状态")
    private Integer investStatus;

    /** 项目进度，签约/开工/投产 */
    @Excel(name = "项目进度，签约/开工/投产")
    private Integer projectProgress;

    /** 项目阶段 */
    @Excel(name = "项目阶段")
    private Integer projectStage;

    /** 项目关联事项数量 */
    @Excel(name = "项目关联事项数量")
    private Integer projectItemNum;

    /** 项目关联事项状态 */
    @Excel(name = "项目关联事项状态")
    private Integer projectItemStatus;

    /** 六定之措施 */
    @Excel(name = "六定之措施")
    private String projectMeasure;

    /** 六定之专班 */
    @Excel(name = "六定之专班")
    private String projectDirector;

    /** 项目负责人 */
    @Excel(name = "项目负责人")
    private String responseName;

    /** 负责人手机号码 */
    @Excel(name = "负责人手机号码")
    private String responsePhone;

    /** 第一季度拟完成投资 */
    @Excel(name = "第一季度拟完成投资")
    private BigDecimal planInvestQuarter1;

    /** 第二季度拟完成投资 */
    @Excel(name = "第二季度拟完成投资")
    private BigDecimal planInvestQuarter2;

    /** 第三季度拟完成投资 */
    @Excel(name = "第三季度拟完成投资")
    private BigDecimal planInvestQuarter3;

    /** 第四季度拟完成投资 */
    @Excel(name = "第四季度拟完成投资")
    private BigDecimal planInvestQuarter4;

    /** 六定状态 */
    @Excel(name = "六定状态")
    private Integer sixDoneStatus;

    /** 状态（0正常 1暂停） */
    @Excel(name = "状态", readConverterExp = "0=正常,1=暂停")
    private String status;

    private String projectStatusStr;

    private String investStatusStr;

    private String hasInvestDone;

    private String sixDoneStatusStr;

    private String rejectReason;

    private String projectTypeStr;

    private String[] projectLabelArray;

    public String getProjectTypeStr() {
        return projectTypeStr;
    }

    public void setProjectTypeStr(String projectTypeStr) {
        this.projectTypeStr = projectTypeStr;
    }

    public String[] getProjectLabelArray() {
        return projectLabelArray;
    }

    public void setProjectLabelArray(String[] projectLabelArray) {
        this.projectLabelArray = projectLabelArray;
    }

    public Integer getProjectItemNum() {
        return projectItemNum;
    }

    public void setProjectItemNum(Integer projectItemNum) {
        this.projectItemNum = projectItemNum;
    }

    public Integer getProjectItemStatus() {
        return projectItemStatus;
    }

    public void setProjectItemStatus(Integer projectItemStatus) {
        this.projectItemStatus = projectItemStatus;
    }

    public String getHasInvestDone() {
        return hasInvestDone;
    }

    public void setHasInvestDone(String hasInvestDone) {
        this.hasInvestDone = hasInvestDone;
    }

    public String getRejectReason() {
        return rejectReason;
    }

    public void setRejectReason(String rejectReason) {
        this.rejectReason = rejectReason;
    }

    public String getInvestStatusStr() {
        return investStatusStr;
    }

    public void setInvestStatusStr(String investStatusStr) {
        this.investStatusStr = investStatusStr;
    }

    public String getSixDoneStatusStr() {
        return sixDoneStatusStr;
    }

    public void setSixDoneStatusStr(String sixDoneStatusStr) {
        this.sixDoneStatusStr = sixDoneStatusStr;
    }

    public String getProjectStatusStr() {
        return projectStatusStr;
    }

    public void setProjectStatusStr(String projectStatusStr) {
        this.projectStatusStr = projectStatusStr;
    }

    public void setProjectId(Long projectId)
    {
        this.projectId = projectId;
    }

    public Long getProjectId()
    {
        return projectId;
    }
    public void setProjectName(String projectName)
    {
        this.projectName = projectName;
    }

    public String getProjectName()
    {
        return projectName;
    }
    public void setProjectCode(String projectCode)
    {
        this.projectCode = projectCode;
    }

    public String getProjectCode()
    {
        return projectCode;
    }
    public void setProjectType(Integer projectType)
    {
        this.projectType = projectType;
    }

    public Integer getProjectType()
    {
        return projectType;
    }
    public void setProjectIndustry(Integer projectIndustry)
    {
        this.projectIndustry = projectIndustry;
    }

    public Integer getProjectIndustry()
    {
        return projectIndustry;
    }
    public void setProjectWorthExpect(BigDecimal projectWorthExpect)
    {
        this.projectWorthExpect = projectWorthExpect;
    }

    public BigDecimal getProjectWorthExpect()
    {
        return projectWorthExpect;
    }
    public void setApproveType(Integer approveType)
    {
        this.approveType = approveType;
    }

    public Integer getApproveType()
    {
        return approveType;
    }
    public void setConstructionType(Integer constructionType)
    {
        this.constructionType = constructionType;
    }

    public Integer getConstructionType()
    {
        return constructionType;
    }
    public void setProjectLabel(String projectLabel)
    {
        this.projectLabel = projectLabel;
    }

    public String getProjectLabel()
    {
        return projectLabel;
    }
    public void setIsSixDone(Integer isSixDone)
    {
        this.isSixDone = isSixDone;
    }

    public Integer getIsSixDone()
    {
        return isSixDone;
    }
    public void setProjectBatch(Integer projectBatch)
    {
        this.projectBatch = projectBatch;
    }

    public Integer getProjectBatch()
    {
        return projectBatch;
    }
    public void setFundDemand(BigDecimal fundDemand)
    {
        this.fundDemand = fundDemand;
    }

    public BigDecimal getFundDemand()
    {
        return fundDemand;
    }
    public void setProjectArea(Integer projectArea)
    {
        this.projectArea = projectArea;
    }

    public Integer getProjectArea()
    {
        return projectArea;
    }
    public void setProjectAddress(String projectAddress)
    {
        this.projectAddress = projectAddress;
    }

    public String getProjectAddress()
    {
        return projectAddress;
    }
    public void setLongitude(String longitude)
    {
        this.longitude = longitude;
    }

    public String getLongitude()
    {
        return longitude;
    }
    public void setLatitude(String latitude)
    {
        this.latitude = latitude;
    }

    public String getLatitude()
    {
        return latitude;
    }
    public void setBeginDatePlan(Date beginDatePlan)
    {
        this.beginDatePlan = beginDatePlan;
    }

    public Date getBeginDatePlan()
    {
        return beginDatePlan;
    }
    public void setEndDatePlan(Date endDatePlan)
    {
        this.endDatePlan = endDatePlan;
    }

    public Date getEndDatePlan()
    {
        return endDatePlan;
    }
    public void setProjectIntroduct(String projectIntroduct)
    {
        this.projectIntroduct = projectIntroduct;
    }

    public String getProjectIntroduct()
    {
        return projectIntroduct;
    }
    public void setProjectProblem(String projectProblem)
    {
        this.projectProblem = projectProblem;
    }

    public String getProjectProblem()
    {
        return projectProblem;
    }
    public void setConstructorName(String constructorName)
    {
        this.constructorName = constructorName;
    }

    public String getConstructorName()
    {
        return constructorName;
    }
    public void setConstructorCode(String constructorCode)
    {
        this.constructorCode = constructorCode;
    }

    public String getConstructorCode()
    {
        return constructorCode;
    }
    public void setConstructorCorp(String constructorCorp)
    {
        this.constructorCorp = constructorCorp;
    }

    public String getConstructorCorp()
    {
        return constructorCorp;
    }
    public void setContactPerson(String contactPerson)
    {
        this.contactPerson = contactPerson;
    }

    public String getContactPerson()
    {
        return contactPerson;
    }
    public void setContactPhone(String contactPhone)
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone()
    {
        return contactPhone;
    }
    public void setProjectStatus(Integer projectStatus)
    {
        this.projectStatus = projectStatus;
    }

    public Integer getProjectStatus()
    {
        return projectStatus;
    }
    public void setTotalInvest(BigDecimal totalInvest)
    {
        this.totalInvest = totalInvest;
    }

    public BigDecimal getTotalInvest()
    {
        return totalInvest;
    }
    public void setDoneInvest(BigDecimal doneInvest)
    {
        this.doneInvest = doneInvest;
    }

    public BigDecimal getDoneInvest()
    {
        return doneInvest;
    }
    public void setActualInvest(BigDecimal actualInvest)
    {
        this.actualInvest = actualInvest;
    }

    public BigDecimal getActualInvest()
    {
        return actualInvest;
    }
    public void setPlanInvest(BigDecimal planInvest)
    {
        this.planInvest = planInvest;
    }

    public BigDecimal getPlanInvest()
    {
        return planInvest;
    }
    public void setInvestStatus(Integer investStatus)
    {
        this.investStatus = investStatus;
    }

    public Integer getInvestStatus()
    {
        return investStatus;
    }
    public void setProjectProgress(Integer projectProgress)
    {
        this.projectProgress = projectProgress;
    }

    public Integer getProjectProgress()
    {
        return projectProgress;
    }
    public void setProjectStage(Integer projectStage)
    {
        this.projectStage = projectStage;
    }

    public Integer getProjectStage()
    {
        return projectStage;
    }
    public void setProjectMeasure(String projectMeasure)
    {
        this.projectMeasure = projectMeasure;
    }

    public String getProjectMeasure()
    {
        return projectMeasure;
    }
    public void setProjectDirector(String projectDirector)
    {
        this.projectDirector = projectDirector;
    }

    public String getProjectDirector()
    {
        return projectDirector;
    }
    public void setResponseName(String responseName)
    {
        this.responseName = responseName;
    }

    public String getResponseName()
    {
        return responseName;
    }
    public void setResponsePhone(String responsePhone)
    {
        this.responsePhone = responsePhone;
    }

    public String getResponsePhone()
    {
        return responsePhone;
    }
    public void setPlanInvestQuarter1(BigDecimal planInvestQuarter1)
    {
        this.planInvestQuarter1 = planInvestQuarter1;
    }

    public BigDecimal getPlanInvestQuarter1()
    {
        return planInvestQuarter1;
    }
    public void setPlanInvestQuarter2(BigDecimal planInvestQuarter2)
    {
        this.planInvestQuarter2 = planInvestQuarter2;
    }

    public BigDecimal getPlanInvestQuarter2()
    {
        return planInvestQuarter2;
    }
    public void setPlanInvestQuarter3(BigDecimal planInvestQuarter3)
    {
        this.planInvestQuarter3 = planInvestQuarter3;
    }

    public BigDecimal getPlanInvestQuarter3()
    {
        return planInvestQuarter3;
    }
    public void setPlanInvestQuarter4(BigDecimal planInvestQuarter4)
    {
        this.planInvestQuarter4 = planInvestQuarter4;
    }

    public BigDecimal getPlanInvestQuarter4()
    {
        return planInvestQuarter4;
    }
    public void setSixDoneStatus(Integer sixDoneStatus)
    {
        this.sixDoneStatus = sixDoneStatus;
    }

    public Integer getSixDoneStatus()
    {
        return sixDoneStatus;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public Integer getConstructionCycle() {
        return constructionCycle;
    }

    public void setConstructionCycle(Integer constructionCycle) {
        this.constructionCycle = constructionCycle;
    }

    public Integer getIsBegin() {
        return isBegin;
    }

    public void setIsBegin(Integer isBegin) {
        this.isBegin = isBegin;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("projectId", getProjectId())
            .append("projectName", getProjectName())
            .append("projectCode", getProjectCode())
            .append("projectType", getProjectType())
            .append("projectIndustry", getProjectIndustry())
            .append("projectWorthExpect", getProjectWorthExpect())
            .append("approveType", getApproveType())
            .append("constructionType", getConstructionType())
            .append("projectLabel", getProjectLabel())
            .append("isSixDone", getIsSixDone())
            .append("projectBatch", getProjectBatch())
            .append("fundDemand", getFundDemand())
            .append("projectArea", getProjectArea())
            .append("projectAddress", getProjectAddress())
            .append("longitude", getLongitude())
            .append("latitude", getLatitude())
            .append("beginDatePlan", getBeginDatePlan())
            .append("endDatePlan", getEndDatePlan())
            .append("projectIntroduct", getProjectIntroduct())
            .append("projectProblem", getProjectProblem())
            .append("constructorName", getConstructorName())
            .append("constructorCode", getConstructorCode())
            .append("constructorCorp", getConstructorCorp())
            .append("contactPerson", getContactPerson())
            .append("contactPhone", getContactPhone())
            .append("projectStatus", getProjectStatus())
            .append("totalInvest", getTotalInvest())
            .append("doneInvest", getDoneInvest())
            .append("actualInvest", getActualInvest())
            .append("planInvest", getPlanInvest())
            .append("investStatus", getInvestStatus())
            .append("projectProgress", getProjectProgress())
            .append("projectStage", getProjectStage())
            .append("projectMeasure", getProjectMeasure())
            .append("projectDirector", getProjectDirector())
            .append("responseName", getResponseName())
            .append("responsePhone", getResponsePhone())
            .append("planInvestQuarter1", getPlanInvestQuarter1())
            .append("planInvestQuarter2", getPlanInvestQuarter2())
            .append("planInvestQuarter3", getPlanInvestQuarter3())
            .append("planInvestQuarter4", getPlanInvestQuarter4())
            .append("sixDoneStatus", getSixDoneStatus())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
